// 权限拦截 导航守卫 路由守卫 router
import router from '@/router'
import store from '@/store'
import NProgress from 'nprogress' // 引入一份进度条插件
import 'nprogress/nprogress.css' // 引入进度条样式

// 定义白名单 所有不受权限控制的页面
const whiteList =['/login','/404']
router.beforeEach(async(to,from,next)=>{
    NProgress.start()
    // 首先判断有无token
    if(store.getters.token){
        // 表示有token继续判断是不是去登录页
        if(to.path==='/login'){
            // 表示去的是登录页
            next('/')  //跳到主页
        }else{
            if (!store.getters.userId) {
                // 如果没有id这个值 才会调用 vuex的获取资料的action
               await store.dispatch('user/getUserInfo')
                // 为什么要写await 因为我们想获取完资料再去放行
              }
            next() //直接放行
        }
    }else{
        // 如果没有token
        if(whiteList.indexOf(to.path)>-1){
            // 如果找到了，表示在在名单里面
            next()
        }else{
            next('/login') //跳到登录页
        }
    }
    // 手动强制关闭一次 ，为了解决 手动切换地址时，进度条的不关闭的问题
    NProgress.done()



  
})

// 路由后置守卫
router.afterEach(function(){
    // 关闭进度条
    NProgress.done()
})